#ifndef CARD_H
#define CARD_H

#include "includes.h"
#include "CardInfo.h"


class Card : public QObject {
	Q_OBJECT
public:
	
	
	/* Card unique IDs */
	enum ID {
		CardID_NoCard,
		
		CardID_Distance_25,
		CardID_Distance_50,
		CardID_Distance_75,
		CardID_Distance_100,
		CardID_Distance_200,
		
		CardID_Hazard_Accident,
		CardID_Hazard_OutOfGas,
		CardID_Hazard_FlatTire,
		CardID_Hazard_SpeedLimit,
		CardID_Hazard_Stop,
		
		CardID_Remedy_Repair,
		CardID_Remedy_Gasoline,
		CardID_Remedy_SpareTire,
		CardID_Remedy_EndOfLimit,
		CardID_Remedy_Roll,
		
		CardID_Safety_DrivingAce,
		CardID_Safety_ExtraTank,
		CardID_Safety_PunctureProof,
		CardID_Safety_RightOfWay
	};
	typedef ID CardID;
	
	
	
	static CardInfo* getInfo(CardID id);
	static CardID cardForProperties(CardFunction function, CardNature nature);
	
private:
	explicit Card();
	
	static QHash<CardID,CardInfo*>* infoHash;
	static void createInfoHash();
};


typedef Card::ID CardID;







#endif // CARD_H
